package com.tjetc.controller;

import jakarta.servlet.http.HttpServlet;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

/**
 *
 * 能让请求到我们的方法内
 *
 *
 * @author gaoyongxiang
 * @version v1.0
 * @date 2025/9/4
 */
@RequestMapping("/request/")
@Controller
public class _1RequestMappingController {

    // method：是指定请求方法 不写默认get和post都能处理
    // 可以简写方式
//    @RequestMapping(value = "f", method = RequestMethod.GET)
//    @PostMapping("f")
    @GetMapping( "f")
    public String f() {
        return "ok";
    }

//    @RequestParam 该注解的作用 是指明前端传递过来的参数名称与之对应
//    官方建议使用对象来接收参数
    @RequestMapping("f1")
    public String f1(@RequestParam("username") String username,
                     @RequestParam("password") String password) {
        System.out.println(username);
        System.out.println(password);
        return "ok";
    }

    // error : Invalid request parameters 无效的请求参数
    // params = "username" : 表示在请求的时候 必须要带上这个参数 否则出现400错误
    // params = "!username": 表示在请求的时候 参数中不能包含此参数 否则出现400错误
//    @RequestMapping(value = "f2", params = "username")
//    @RequestMapping(value = "f2", params = "!username")
    @RequestMapping(value = "f2", params = {"username=zhangsan"})
    public String f2() {
        return "ok";
    }

    @RequestMapping(value = "f3/{userId}")
    public String f3(@PathVariable("userId") String id) {
        System.out.println(id);
        return "ok";
    }

    // 源码分析
    @RequestMapping("/f4")
    public ModelAndView f(@RequestParam("username") String username){
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("username", username);
        modelAndView.setViewName("ok");
        return modelAndView;
    }





}